Database management systems (DBMS) control access and recovery of data that is stored, for example, in remote databases. The database management systems may be based on the notion that application code should be separated from data control and data by an interface (e.g., by a Data Language/Interface (DL/I)). Such database management systems can allow application programs to access and navigate through the data by using a standard DL/I callable interface. Multiple applications can access and update a single instance of data through the interface, thus providing current data for each application. There is no need to make redundant copies of the data. Online access to data also becomes easier because the application code is separated from data control. Application code can focus on the manipulation of data without the complications and overhead associated with the access and recovery of data.
A widely deployed database management system using a DL/I interface is IBM's Information Management System (IMS). IMS application programs are typically static processes that have to interface with dynamic data stores (IMS databases) that can oscillate from being freshly reorganized to being highly disorganized. The IMS DL/I application programs have to be fine tuned or altered depending on the state of the IMS databases. Unfortunately, in most environments, the effort needed to customize IMS DL/I applications to respond to changes in the databases can be prohibitive in cost and/or the labor required. In common implementations, the IMS DL/I applications are tuned only for a specific state of an IMS database and suffer poor performance when the IMS database is a different state.
Consideration is now being given to implementations of IMS DL/I application for data stores that have dynamic states.